package com.zeny.express.framework.core.service;

import java.sql.SQLException;
import java.util.Map;

import org.apache.ibatis.mapping.BoundSql;
import org.apache.ibatis.mapping.MappedStatement;
import org.springframework.cache.annotation.Cacheable;

import com.zeny.express.framework.core.domain.Page;

/**
 * 翻页汇总服务
 * 
 * @author zhuwei
 * @date 2013年10月17日 下午9:02:09
 */
public interface PaginationService {

	/**
	 * 数据合计汇总
	 * 
	 * @author zhuwei
	 * @date 2013年10月17日 下午9:02:20
	 * @param key
	 * @param ms
	 * @param boundSql
	 * @param page
	 * @return
	 * @throws SQLException
	 */
	@Cacheable(value = "frameworkCountCache", key = "#key")
	Map<String, Object> getCount(String key, MappedStatement ms,
			BoundSql boundSql, Page<?> page) throws SQLException;

	/**
	 * 数据合计汇总
	 * 
	 * @author zhuwei
	 * @date 2013年10月17日 下午9:02:20
	 * @param ms
	 * @param boundSql
	 * @param page
	 * @return
	 * @throws SQLException
	 */
	Map<String, Object> getCount(MappedStatement ms, BoundSql boundSql,
			Page<?> page) throws SQLException;

}
